﻿///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
		
	ОбновитьСписокВыбораПлановОбмена();
	
	ОбновитьСписокВыбораМакетаПравил();
	
	ОбновитьИнформациюОПравилах();
	
	ОбновитьИсточникПравил();
	
	СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными();
	
	НастройкаЭлементовФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	Если ПараметрыЗаписи.Свойство("ЗаписатьИЗакрыть") Тогда
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ИмяПланаОбменаПриИзменении(Элемент)
	
	Запись.ИмяМакетаПравил = "";
	
	// вызов сервера
	ОбновитьСписокВыбораМакетаПравил();
	
КонецПроцедуры

&НаКлиенте
Процедура ИсточникПравилПриИзменении(Элемент)
	
	Если ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МакетКонфигурации") Тогда
		Запись.РежимОтладки = Ложь;
	КонецЕсли;
	
	Элементы.ИмяМенеджераРегистрации.Доступность = 
		ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский");
		
	Элементы.ФормаСохранитьПравилаРегистрацииВФайл.Доступность = Запись.ПравилаЗагружены;
	
	ОбновитьИнформациюОНезаписанныхПравилах();
	
КонецПроцедуры

&НаКлиенте
Процедура ИмяМенеджераРегистрацииПриИзменении(Элемент)
	
	ОбновитьИнформациюОНезаписанныхПравилах();

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ЗагрузитьПравила(Команда)
	
	ОчиститьСообщения();
	
	// Из файла с клиента
	ЧастиИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Запись.ИмяФайлаПравил);
	
	ПараметрыДиалога = Новый Структура;
	ПараметрыДиалога.Вставить("Заголовок", НСтр("ru = 'Укажите, из какого файла загрузить правила'"));
	ПараметрыДиалога.Вставить("Фильтр",
		  НСтр("ru = 'Файлы правил регистрации (*.xml)'") + "|*.xml|"
		+ НСтр("ru = 'Архивы ZIP (*.zip)'")   + "|*.zip");
	
	ПараметрыДиалога.Вставить("ПолноеИмяФайла", ЧастиИмени.ПолноеИмя);
	ПараметрыДиалога.Вставить("ИндексФильтра", ?( НРег(ЧастиИмени.Расширение) = ".zip", 1, 0) ); 
	
	Оповещение = Новый ОписаниеОповещения("ЗагрузитьПравилаЗавершение", ЭтотОбъект);
	ОбменДаннымиКлиент.ВыбратьИПередатьФайлНаСервер(Оповещение, ПараметрыДиалога, УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ВыгрузитьПравила(Команда)
	
	Если НЕ Запись.ПравилаЗагружены Тогда
		
		ТекстСообщения = НСтр("ru = 'Правила регистрации незагружены'");
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
		Возврат;
		
	КонецЕсли;
	
	ЧастиИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Запись.ИмяФайлаПравил);
	
	АдресХранения = ПолучитьНавигационнуюСсылкуНаСервере();
	ФильтрИмени = НСтр("ru = 'Файлы правил (*.xml)'") + "|*.xml";
	
	Если ПустаяСтрока(АдресХранения) Тогда
		Возврат;
	КонецЕсли;
	
	Если ПустаяСтрока(ЧастиИмени.ИмяБезРасширения) Тогда
		ПолноеИмяФайла = НСтр("ru = 'Правила регистрации'");
	Иначе
		ПолноеИмяФайла = ЧастиИмени.ИмяБезРасширения;
	КонецЕсли;
	
	ПараметрыДиалога = Новый Структура;
	ПараметрыДиалога.Вставить("Режим", РежимДиалогаВыбораФайла.Сохранение);
	ПараметрыДиалога.Вставить("Заголовок", НСтр("ru = 'Укажите в какой файл выгрузить правила'") );
	ПараметрыДиалога.Вставить("ПолноеИмяФайла", ПолноеИмяФайла);
	ПараметрыДиалога.Вставить("Фильтр", ФильтрИмени);
	
	ПолучаемыйФайл = Новый Структура("Имя, Хранение", ПолноеИмяФайла, АдресХранения);
	
	ОбменДаннымиКлиент.ВыбратьИСохранитьФайлНаКлиенте(ПолучаемыйФайл, ПараметрыДиалога);
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьПравилаРегистрацииИзМакета(Команда)
	
	Список = Элементы.ИмяМакетаПравил.СписокВыбора;
	
	Если Список.Количество() = 0 Тогда
		
		Шаблон = НСтр("ru = 'Для плана обмена ""%1"" не обнаружено ни одного макета правил регистрации'", 
			ОбщегоНазначенияКлиент.КодОсновногоЯзыка());
			
		Текст = СтрШаблон(Шаблон, Запись.ИмяПланаОбмена);
		
		ОбщегоНазначенияКлиент.СообщитьПользователю(Текст);
		
	ИначеЕсли Список.Количество() = 1 Тогда
		
		СохранитьПравилаРегистрацииИзМакетаЗавершение(Список[0].Значение);
		
	Иначе
		
		Оповещение = Новый ОписаниеОповещения("ВыбораМакетаЗавершение", ЭтотОбъект);
		Список.ПоказатьВыборЭлемента(Оповещение, НСтр("ru = 'Выберите макет правил регистрации'"));
	
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыбораМакетаЗавершение(Результат, ДополнительныеПараметры) Экспорт

	Если Результат = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	СохранитьПравилаРегистрацииИзМакетаЗавершение(Результат.Значение);
	
КонецПроцедуры

&НаКлиенте
Процедура СохранитьПравилаРегистрацииИзМакетаЗавершение(ИмяМакета)
	
	ЧастиИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(Запись.ИмяФайлаПравил);
	
	Если ПустаяСтрока(ЧастиИмени.ИмяБезРасширения) Тогда
		ПолноеИмяФайла = НСтр("ru = 'Правила регистрации'");
	Иначе
		ПолноеИмяФайла = ЧастиИмени.ИмяБезРасширения;
	КонецЕсли;
		
	АдресФайла = ПодготовитьФайлНаСервере(ИмяМакета);
	
	ПараметрыСохранения = ФайловаяСистемаКлиент.ПараметрыСохраненияФайла();
	ПараметрыСохранения.Диалог.Заголовок = НСтр("ru = 'Укажите в какой файл выгрузить правила'");
	ПараметрыСохранения.Диалог.Фильтр = НСтр("ru = 'Файлы правил (*.xml)'") + "|*.xml";
	
	ФайловаяСистемаКлиент.СохранитьФайл(Неопределено, АдресФайла, ПолноеИмяФайла, ПараметрыСохранения);
	
КонецПроцедуры

&НаСервере
Функция ПодготовитьФайлНаСервере(ИмяМакета)

	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	Макет = ПланыОбмена[Запись.ИмяПланаОбмена].ПолучитьМакет(ИмяМакета);
	Макет.Записать(ИмяВременногоФайла);
	
	ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
	
	УдалитьФайлы(ИмяВременногоФайла);
	
	Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанные);
		
КонецФункции

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
	
	ПараметрыЗаписи = Новый Структура;
	ПараметрыЗаписи.Вставить("ЗаписатьИЗакрыть");
	РазрешитьВнешнийРесурс(ПараметрыЗаписи);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаписатьПравила(Команда)
	
	ПараметрыЗаписи = Новый Структура;
	РазрешитьВнешнийРесурс(ПараметрыЗаписи)
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ПоказатьЖурналРегистрацииПриОшибке(Ответ, ДополнительныеПараметры) Экспорт
	
	Если Ответ = КодВозвратаДиалога.Да Тогда
		
		Отбор = Новый Структура;
		Отбор.Вставить("СобытиеЖурналаРегистрации", СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными);
		ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", Отбор, ЭтотОбъект, , , , , РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьСписокВыбораПлановОбмена()
	
	СписокПлановОбмена = ОбменДаннымиПовтИсп.СписокПлановОбменаБСП();
	
	ЗаполнитьСписок(СписокПлановОбмена, Элементы.ИмяПланаОбмена.СписокВыбора);
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьСписокВыбораМакетаПравил()
	
	Если ПустаяСтрока(Запись.ИмяПланаОбмена) Тогда
		
		Элементы.ГруппаОсновная.Заголовок = НСтр("ru = 'Правила конвертации'");
		
	Иначе
		
		Элементы.ГруппаОсновная.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			Элементы.ГруппаОсновная.Заголовок, Метаданные.ПланыОбмена[Запись.ИмяПланаОбмена].Синоним);
		
	КонецЕсли;
	
	СписокМакетов = ОбменДаннымиПовтИсп.ПравилаРегистрацииДляПланаОбменаИзКонфигурации(Запись.ИмяПланаОбмена);
	
	СписокВыбора = Элементы.ИмяМакетаПравил.СписокВыбора;
	СписокВыбора.Очистить();
	
	ЗаполнитьСписок(СписокМакетов, СписокВыбора);
	
	Элементы.ИсточникМакетКонфигурации.ТекущаяСтраница = ?(СписокМакетов.Количество() = 1,
		Элементы.СтраницаОдинМакет, Элементы.СтраницаНесколькоМакетов);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСписок(СписокИсточник, СписокПриемник)
	
	Для Каждого Элемент Из СписокИсточник Цикл
		
		ЗаполнитьЗначенияСвойств(СписокПриемник.Добавить(), Элемент);
		
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьПравилаНаСервере(Отказ, АдресВременногоХранилища, ИмяФайлаПравил, ЭтоАрхив)
	
	Запись.ИсточникПравил = ИсточникПравил;
	
	Объект = РеквизитФормыВЗначение("Запись");
	
	Если ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации
		Или ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл Тогда
		
		РегистрыСведений.ПравилаДляОбменаДанными.ЗагрузитьПравила(Отказ, Объект, АдресВременногоХранилища, ИмяФайлаПравил, ЭтоАрхив);
		
	Иначе
		
		Объект.ИмяФайлаПравил = "";
		Объект.ПравилаЗачитанные = Неопределено;
		
		Если ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерТиповой Тогда
			Объект.ИмяМенеджераРегистрации = ОбменДаннымиПовтИсп.ИмяМенеджераРегистрации(Объект.ИмяПланаОбмена);
		КонецЕсли;
			
		Менеджер = ОбщегоНазначения.ОбщийМодуль(Объект.ИмяМенеджераРегистрации);
		Объект.ИнформацияОПравилах = Менеджер.ИнформацияОПравилах();
		
	КонецЕсли;
	
	Если Не Отказ Тогда
		
		Объект.Записать();
		
		Модифицированность = Ложь;
		
		// Кэш открытых сеансов для механизма регистрации стал неактуальным.
		ОбменДаннымиСлужебный.СброситьКэшМеханизмаРегистрацииОбъектов();
		ОбновитьПовторноИспользуемыеЗначения();
	КонецЕсли;
	
	ЗначениеВРеквизитФормы(Объект, "Запись");
	
	ОбновитьИнформациюОПравилах();
	Элементы.ГруппаПланаОбмена.Видимость = ПустаяСтрока(Запись.ИмяПланаОбмена);
	
КонецПроцедуры

&НаСервере
Функция ПолучитьНавигационнуюСсылкуНаСервере()
	
	Отбор = Новый Структура;
	Отбор.Вставить("ИмяПланаОбмена", Запись.ИмяПланаОбмена);
	Отбор.Вставить("ВидПравил",      Запись.ВидПравил);
	
	КлючЗаписи = РегистрыСведений.ПравилаДляОбменаДанными.СоздатьКлючЗаписи(Отбор);
	
	Возврат ПолучитьНавигационнуюСсылку(КлючЗаписи, "ПравилаXML");
	
КонецФункции

&НаСервере
Процедура ОбновитьИнформациюОПравилах()
	
	Если Запись.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл Тогда
		
		ШаблонСтроки = НСтр("ru = 'Использование правил, загруженных из файла,
                             |может привести к ошибкам при переходе на новую версию программы.
                             |
                             |%1'");
			
	ИначеЕсли Запись.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский Тогда
		
		ШаблонСтроки = НСтр("ru = 'Использование правил, из пользовательского модуля,
                             |может привести к ошибкам при переходе на новую версию программы.
                             |
                             |%1'");	
	Иначе
		
		ШаблонСтроки = "%1";
		
	КонецЕсли;
	
	ИнформацияОПравилах = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтроки, Запись.ИнформацияОПравилах);
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьИнформациюОНезаписанныхПравилах()
	
	Если ИсточникПравил = Запись.ИсточникПравил
		И (ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации
		ИЛИ ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл)Тогда

		ОбновитьИнформациюОПравилах();
	
	ИначеЕсли ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации Тогда
		
		ИнформацияОПравилах = НСтр("ru = 'Информация о правилах будет доступна после записи'");
		
	ИначеЕсли ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл Тогда
		
		ИнформацияОПравилах = НСтр("ru = 'Информация о правилах будет доступна после загрузки из файла'");
		
	Иначе
		
		Если ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерТиповой Тогда
			
			ИмяМенеджераРегистрации = ОбменДаннымиПовтИсп.ИмяМенеджераРегистрации(Запись.ИмяПланаОбмена);	
			ШаблонСтроки = "%1";
			
		ИначеЕсли ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский Тогда
			
			ИмяМенеджераРегистрации = Запись.ИмяМенеджераРегистрации;
			ШаблонСтроки = НСтр("ru = 'Использование правил, из пользовательского модуля,
									|может привести к ошибкам при переходе на новую версию программы.
									|
									|%1'");
			
		КонецЕсли;	
		
		Попытка
			
			Менеджер = ОбщегоНазначения.ОбщийМодуль(ИмяМенеджераРегистрации);
			ИнформацияОПравилах = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтроки, Менеджер.ИнформацияОПравилах());
			
		Исключение
			
			ТекстСообщения = НСтр("ru = 'При получении информации о правилах регистрации произошла ошибка:
                                   |%1'");
			ИнформацияОПравилах = СтроковыеФункции.ФорматированнаяСтрока(ТекстСообщения, ИнформацияОбОшибке().Описание);
			
		КонецПопытки;
		
	КонецЕсли;
		
КонецПроцедуры	
	
&НаСервере
Процедура ОбновитьИсточникПравил()
	
	ИсточникПравил = Запись.ИсточникПравил;
	
КонецПроцедуры

&НаСервере
Процедура НастройкаЭлементовФормы()

	Элементы.ГруппаПланаОбмена.Видимость = ПустаяСтрока(Запись.ИмяПланаОбмена);
	
	Если ОбменДаннымиПовтИсп.ПравилаРегистрацииВМенеджере(Запись.ИмяПланаОбмена) Тогда
		
		Элементы.ГруппаПравилаТиповые.Видимость = Ложь;
		Элементы.ИмяМенеджераРегистрации.Доступность = ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский;
		Элементы.ФормаСохранитьПравилаРегистрацииВФайл.Доступность = Запись.ПравилаЗагружены;
		Элементы.ГруппаДействияСПравиламиИзФайла.Видимость = Ложь;
		Элементы.ГруппаДействияСПравиламиИзФайлаМенеджер.Видимость = Истина;
		Элементы.ФормаСохранитьПравилаРегистрацииВФайл.Видимость = Ложь;
		Элементы.ФормаСохранитьПравилаРегистрацииИзМакета.Видимость = Истина;
		
		ИмяТиповогоМенеджераРегистрации = ОбменДаннымиПовтИсп.ИмяМенеджераРегистрации(Запись.ИмяПланаОбмена);
		
	Иначе
		
		Элементы.ГруппаПравилаМенеджерТиповой.Видимость = Ложь;
		Элементы.ГруппаПравилаМенеджер.Видимость = Ложь;
		Элементы.ГруппаДействияСПравиламиИзФайла.Видимость = Истина;
		Элементы.ГруппаДействияСПравиламиИзФайлаМенеджер.Видимость = Ложь;
		Элементы.ФормаСохранитьПравилаРегистрацииИзМакета.Видимость = Ложь;
		
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьЗагрузкуПравил(Знач АдресПомещенногоФайла, Знач ИмяФайла, Знач ЭтоАрхив)
	Отказ = Ложь;
	
	ЗагрузитьПравилаНаСервере(Отказ, АдресПомещенногоФайла, ИмяФайла, ЭтоАрхив);
	
	Если Не Отказ Тогда
		ПоказатьОповещениеПользователя(,, НСтр("ru = 'Правила успешно загружены в информационную базу.'"));
		Возврат;
	КонецЕсли;
	
	ТекстОшибки = НСтр("ru = 'В процессе загрузки правил были обнаружены ошибки.
	                         |Перейти в журнал регистрации?'");
	
	Оповещение = Новый ОписаниеОповещения("ПоказатьЖурналРегистрацииПриОшибке", ЭтотОбъект);
	ПоказатьВопрос(Оповещение, ТекстОшибки, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет);
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьПравилаЗавершение(Знач РезультатПомещенияФайлов, Знач ДополнительныеПараметры) Экспорт
	
	АдресПомещенногоФайла = РезультатПомещенияФайлов.Хранение;
	ТекстОшибки           = РезультатПомещенияФайлов.ОписаниеОшибки;
	
	Если ПустаяСтрока(ТекстОшибки) И ПустаяСтрока(АдресПомещенногоФайла) Тогда
		ТекстОшибки = НСтр("ru = 'Ошибка передачи файла на сервер'");
	КонецЕсли;
	
	Если Не ПустаяСтрока(ТекстОшибки) Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки);
		Возврат;
	КонецЕсли;
	
	ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.Файл");
	
	// Успешно передали файл, загружаем на сервере.
	ЧастиИмени = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(РезультатПомещенияФайлов.Имя);
	
	ВыполнитьЗагрузкуПравил(АдресПомещенногоФайла, ЧастиИмени.Имя, НРег(ЧастиИмени.Расширение) = ".zip");
КонецПроцедуры

&НаКлиенте
Процедура РазрешитьВнешнийРесурс(ПараметрыЗаписи)
	
	ОповещениеОЗакрытии = Новый ОписаниеОповещения("РазрешитьВнешнийРесурсЗавершение", ЭтотОбъект, ПараметрыЗаписи);
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПрофилиБезопасности") Тогда
		Запросы = СоздатьЗапросНаИспользованиеВнешнихРесурсов(Запись);
		МодульРаботаВБезопасномРежимеКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаВБезопасномРежимеКлиент");
		МодульРаботаВБезопасномРежимеКлиент.ПрименитьЗапросыНаИспользованиеВнешнихРесурсов(Запросы, ЭтотОбъект, ОповещениеОЗакрытии);
	Иначе
		ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, КодВозвратаДиалога.ОК);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура РазрешитьВнешнийРесурсЗавершение(Результат, ПараметрыЗаписи) Экспорт
	
	Если Результат = КодВозвратаДиалога.ОК Тогда
		
		Если ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МакетКонфигурации") Тогда
			// Из конфигурации
			ВыполнитьЗагрузкуПравил(Неопределено, "", Ложь);
		ИначеЕсли ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МенеджерТиповой")
			Или ИсточникПравил = ПредопределенноеЗначение("Перечисление.ИсточникиПравилДляОбменаДанными.МенеджерПользовательский") Тогда
			Запись.ИсточникПравил = ИсточникПравил;
			Запись.ИмяФайлаПравил = "";
		КонецЕсли;
		
		Записать(ПараметрыЗаписи);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция СоздатьЗапросНаИспользованиеВнешнихРесурсов(Знач Запись)
	
	ЗапросыРазрешений = Новый Массив;
	ПравилаКонвертацииИзФайла = РегистрыСведений.ПравилаДляОбменаДанными.ПравилаКонвертацииИзФайла(Запись.ИмяПланаОбмена);
	ЕстьПравилаКонвертации = (ПравилаКонвертацииИзФайла <> Неопределено);
	ПравилаРегистрацииИзФайла = (Запись.ИсточникПравил = Перечисления.ИсточникиПравилДляОбменаДанными.Файл);
	РегистрыСведений.ПравилаДляОбменаДанными.ЗапросНаИспользованиеВнешнихРесурсов(ЗапросыРазрешений,
		?(ЕстьПравилаКонвертации, ПравилаКонвертацииИзФайла, Запись), ЕстьПравилаКонвертации, ПравилаРегистрацииИзФайла);
	Возврат ЗапросыРазрешений;
	
КонецФункции


#КонецОбласти
